<html>
<head><meta charset="utf-8"><title>design meeting 2020.05.05 · wg-traits · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/index.html">wg-traits</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html">design meeting 2020.05.05</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="196359047"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196359047" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196359047">(May 05 2020 at 19:58)</a>:</h4>
<p>Hi <span class="user-group-mention" data-user-group-id="692">@WG-traits</span></p>



<a name="196359057"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196359057" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196359057">(May 05 2020 at 19:58)</a>:</h4>
<p>Meeting is 2ish minutes</p>



<a name="196359237"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196359237" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196359237">(May 05 2020 at 20:00)</a>:</h4>
<p>There isn't currently anything on the agenda for today</p>



<a name="196359264"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196359264" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196359264">(May 05 2020 at 20:00)</a>:</h4>
<p>(link <a href="https://hackmd.io/nrhN5A8sR2eY9UdfJTKcJg?both" title="https://hackmd.io/nrhN5A8sR2eY9UdfJTKcJg?both">https://hackmd.io/nrhN5A8sR2eY9UdfJTKcJg?both</a>)</p>



<a name="196359458"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196359458" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196359458">(May 05 2020 at 20:01)</a>:</h4>
<p>one thing I was thinking of doing</p>



<a name="196359487"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196359487" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196359487">(May 05 2020 at 20:01)</a>:</h4>
<p>9 PRs merged the last week :)</p>



<a name="196359513"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196359513" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196359513">(May 05 2020 at 20:01)</a>:</h4>
<p>is creating issues for the various bits of rust types we need to support</p>



<a name="196359531"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196359531" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196359531">(May 05 2020 at 20:02)</a>:</h4>
<p>And 0.10.0 has been released :)</p>



<a name="196359617"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196359617" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196359617">(May 05 2020 at 20:02)</a>:</h4>
<p>there's a reasonably big list in <a href="https://github.com/rust-lang-nursery/chalk/issues/368" title="https://github.com/rust-lang-nursery/chalk/issues/368">chalk#368</a></p>



<a name="196359630"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196359630" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196359630">(May 05 2020 at 20:02)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05/near/196359513" title="#narrow/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05/near/196359513">said</a>:</p>
<blockquote>
<p>is creating issues for the various bits of rust types we need to support</p>
</blockquote>
<p>Other than types?</p>



<a name="196359703"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196359703" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196359703">(May 05 2020 at 20:02)</a>:</h4>
<p>and I guess we can mostly point at <span class="user-mention" data-user-id="281304">@Mark McCaskey</span>'s PR for the model for most of them</p>



<a name="196359818"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196359818" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196359818">(May 05 2020 at 20:03)</a>:</h4>
<p>So, in terms of agenda... I'm ok with a light meeting. <span class="user-mention" data-user-id="251766">@Areredify</span> and I were talking about the question of how to handle types in const generics though</p>



<a name="196359834"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196359834" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196359834">(May 05 2020 at 20:03)</a>:</h4>
<p>which turns out to be more annoying than one might think</p>



<a name="196359851"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196359851" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196359851">(May 05 2020 at 20:03)</a>:</h4>
<p>I skimmed through that</p>



<a name="196359927"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196359927" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196359927">(May 05 2020 at 20:04)</a>:</h4>
<p>Maybe we can get back to that?</p>



<a name="196359965"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196359965" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196359965">(May 05 2020 at 20:04)</a>:</h4>
<p>But let's maybe start with sprint progress updates?</p>



<a name="196359977"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196359977" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196359977">(May 05 2020 at 20:04)</a>:</h4>
<p>If there are any</p>



<a name="196360027"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360027" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360027">(May 05 2020 at 20:05)</a>:</h4>
<p>(last week)</p>



<a name="196360040"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360040" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360040">(May 05 2020 at 20:05)</a>:</h4>
<p>So, I'm feeling a bit lost as to what <em>I</em> should be doing</p>



<a name="196360057"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360057" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360057">(May 05 2020 at 20:05)</a>:</h4>
<p>I keep wanting to do something and feeling like "uh...mind blank"</p>



<a name="196360083"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360083" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360083">(May 05 2020 at 20:05)</a>:</h4>
<p>Yeah, I can understand that</p>



<a name="196360085"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360085" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Areredify <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360085">(May 05 2020 at 20:05)</a>:</h4>
<p>You should review my <code>Unsize</code> pr <span aria-label="slight smile" class="emoji emoji-1f642" role="img" title="slight smile">:slight_smile:</span></p>



<a name="196360089"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360089" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360089">(May 05 2020 at 20:05)</a>:</h4>
<p>But I did start looking into the refactorings of predicates and things in rustc</p>



<a name="196360113"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360113" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360113">(May 05 2020 at 20:05)</a>:</h4>
<p><span class="user-mention silent" data-user-id="251766">Areredify</span> <a href="#narrow/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05/near/196360085" title="#narrow/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05/near/196360085">said</a>:</p>
<blockquote>
<p>You should review my <code>Unsize</code> pr <span aria-label="slight smile" class="emoji emoji-1f642" role="img" title="slight smile">:slight_smile:</span></p>
</blockquote>
<p>should I? I was waiting until <span class="user-mention" data-user-id="232957">@Jack Huey</span>'s comments were addressed, but I can :)</p>



<a name="196360135"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360135" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360135">(May 05 2020 at 20:06)</a>:</h4>
<p>although reviewing PRs is one thing I've been able to do</p>



<a name="196360295"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360295" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360295">(May 05 2020 at 20:07)</a>:</h4>
<p>looking over <a href="https://rust-lang.github.io/wg-traits/roadmap/skill-tree.html" title="https://rust-lang.github.io/wg-traits/roadmap/skill-tree.html">the skill tree</a>...</p>



<a name="196360325"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360325" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360325">(May 05 2020 at 20:07)</a>:</h4>
<p>(which I somewhat updated...)</p>



<a name="196360423"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360423" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360423">(May 05 2020 at 20:08)</a>:</h4>
<p>...it seems like one major area that's not making too much progress is the "aligning" of rustc/chalk</p>



<a name="196360434"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360434" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360434">(May 05 2020 at 20:08)</a>:</h4>
<p>which is why I started trying to write-out some of the predicate work</p>



<a name="196360442"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360442" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Areredify <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360442">(May 05 2020 at 20:08)</a>:</h4>
<p><code>Unsize</code> logic is ready to be reviewed, I am missing some tests and comments here and there</p>



<a name="196360450"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360450" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360450">(May 05 2020 at 20:08)</a>:</h4>
<p>which I think would <em>also</em> help towards trying to implement GATs in the native solve</p>



<a name="196360470"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360470" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360470">(May 05 2020 at 20:08)</a>:</h4>
<p>though I realize now that we may have to resolve some of the region interactions</p>



<a name="196360499"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360499" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360499">(May 05 2020 at 20:09)</a>:</h4>
<p>that's not really on the skill tree I guess</p>



<a name="196360500"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360500" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Areredify <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360500">(May 05 2020 at 20:09)</a>:</h4>
<p>And also a possibility of adding <code>ObjectSafe(Trait)</code>, which I wanted you to weigh in on</p>



<a name="196360504"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360504" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360504">(May 05 2020 at 20:09)</a>:</h4>
<p>Yeah, I would say the work there that <em>hasn't</em> been worked on is on the rustc side</p>



<a name="196360525"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360525" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360525">(May 05 2020 at 20:09)</a>:</h4>
<blockquote>
<p>Adapt rustc's representation of late-bound items</p>
</blockquote>



<a name="196360526"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360526" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360526">(May 05 2020 at 20:09)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05/near/196360470" title="#narrow/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05/near/196360470">said</a>:</p>
<blockquote>
<p>though I realize now that we may have to resolve some of the region interactions</p>
</blockquote>
<p>What region interactions?</p>



<a name="196360548"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360548" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360548">(May 05 2020 at 20:09)</a>:</h4>
<p>ninja'd</p>



<a name="196360573"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360573" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360573">(May 05 2020 at 20:10)</a>:</h4>
<p>well, we're in the midst of the <a href="https://github.com/rust-lang/rust/issues/56105" title="https://github.com/rust-lang/rust/issues/56105">"universe transition"</a> in rustc</p>



<a name="196360632"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360632" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360632">(May 05 2020 at 20:10)</a>:</h4>
<p>and that basically affects how <code>forall</code> is handled</p>



<a name="196360638"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360638" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360638">(May 05 2020 at 20:10)</a>:</h4>
<p>to make it match chalk</p>



<a name="196360648"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360648" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360648">(May 05 2020 at 20:10)</a>:</h4>
<p>but there are some...<em>interactions</em> with backwards compatibility</p>



<a name="196360681"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360681" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360681">(May 05 2020 at 20:10)</a>:</h4>
<p>Oh, I haven't seen this one</p>



<a name="196360696"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360696" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360696">(May 05 2020 at 20:11)</a>:</h4>
<p>I could elaborate but suffice to say for now that the plan I <em>did</em> want to do would have a big impact on wasm-bindgen (and maybe break other crates too), so it probably makes sense to try and explore some other plans</p>



<a name="196360699"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360699" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360699">(May 05 2020 at 20:11)</a>:</h4>
<p><span class="user-mention silent" data-user-id="251766">Areredify</span> <a href="#narrow/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05/near/196360500" title="#narrow/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05/near/196360500">said</a>:</p>
<blockquote>
<p>And also a possibility of adding <code>ObjectSafe(Trait)</code>, which I wanted you to weigh in on</p>
</blockquote>
<p>Let's be sure to get back to this in a bit</p>



<a name="196360766"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360766" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360766">(May 05 2020 at 20:11)</a>:</h4>
<p>Was this related to <a href="https://github.com/rust-lang/rust/pull/66037" title="https://github.com/rust-lang/rust/pull/66037">https://github.com/rust-lang/rust/pull/66037</a></p>



<a name="196360777"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360777" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360777">(May 05 2020 at 20:11)</a>:</h4>
<p>no</p>



<a name="196360790"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360790" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360790">(May 05 2020 at 20:11)</a>:</h4>
<p>I'm thinking of the other one</p>



<a name="196360871"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196360871" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196360871">(May 05 2020 at 20:12)</a>:</h4>
<p>leak check stuff</p>



<a name="196361089"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361089" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361089">(May 05 2020 at 20:14)</a>:</h4>
<p>(sorry, was afk, back now)</p>



<a name="196361102"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361102" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361102">(May 05 2020 at 20:14)</a>:</h4>
<p>it is related to the leak check stuff, yes</p>



<a name="196361110"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361110" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361110">(May 05 2020 at 20:14)</a>:</h4>
<p>that is, leak check is the old system</p>



<a name="196361123"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361123" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361123">(May 05 2020 at 20:14)</a>:</h4>
<p>Can you explain a little bit about the problem?</p>



<a name="196361151"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361151" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361151">(May 05 2020 at 20:15)</a>:</h4>
<p>I swear I have to re-remember things every time</p>



<a name="196361180"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361180" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361180">(May 05 2020 at 20:15)</a>:</h4>
<p>so</p>



<a name="196361190"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361190" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361190">(May 05 2020 at 20:15)</a>:</h4>
<p>in rustc today we have this thing called the 'leak check'</p>



<a name="196361220"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361220" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361220">(May 05 2020 at 20:16)</a>:</h4>
<p>the idea is that, to handle higher-ranked operations,</p>



<a name="196361286"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361286" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361286">(May 05 2020 at 20:16)</a>:</h4>
<p>e.g., in order to figure out if <code>for&lt;'a&gt; T: Trait&lt;'a&gt;</code></p>



<a name="196361314"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361314" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361314">(May 05 2020 at 20:16)</a>:</h4>
<p>we would (a) first create a fresh placeholder for <code>'a</code></p>



<a name="196361336"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361336" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361336">(May 05 2020 at 20:16)</a>:</h4>
<p>(b) execute the impl match, which yields up some obligations,</p>



<a name="196361378"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361378" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361378">(May 05 2020 at 20:17)</a>:</h4>
<p>and then (c) we look through those obligations to see if any of them would constrain <code>'a</code></p>



<a name="196361395"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361395" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361395">(May 05 2020 at 20:17)</a>:</h4>
<p>for example if there was <code>impl&lt;T&gt; Trait&lt;'static&gt; for T</code>,</p>



<a name="196361400"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361400" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361400">(May 05 2020 at 20:17)</a>:</h4>
<p>then we'd have some obligation that <code>'a = 'static</code>,</p>



<a name="196361405"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361405" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361405">(May 05 2020 at 20:17)</a>:</h4>
<p>and we would error</p>



<a name="196361407"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361407" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361407">(May 05 2020 at 20:17)</a>:</h4>
<p>so far, so good</p>



<a name="196361429"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361429" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361429">(May 05 2020 at 20:17)</a>:</h4>
<p>the problem is that the way rustc does this is that it pushes those placeholders onto a stack</p>



<a name="196361442"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361442" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361442">(May 05 2020 at 20:17)</a>:</h4>
<p>does the operation</p>



<a name="196361473"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361473" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361473">(May 05 2020 at 20:18)</a>:</h4>
<p>then pops things from the stack, looking for errors at the same time</p>



<a name="196361556"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361556" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361556">(May 05 2020 at 20:18)</a>:</h4>
<p>like, there is a Rust function that does:</p>
<div class="codehilite"><pre><span></span><code>push_placeholders();
do_operation();
if pop_placeholders_and_scan_constraints() == error {
    return Error;
}
...
</code></pre></div>



<a name="196361606"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361606" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361606">(May 05 2020 at 20:19)</a>:</h4>
<p>we've since adapted this code to use universes much like chalk, but it still has this  kind of "eager" check</p>



<a name="196361717"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361717" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361717">(May 05 2020 at 20:20)</a>:</h4>
<p>in contrast, in the "universe-based" system that chalk uses, you handle placeholders by creating the placeholders in the new universe and proceeding, but there is no notion of popping -- but this in turn can mean that we won't detect the error until later</p>



<a name="196361749"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361749" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361749">(May 05 2020 at 20:20)</a>:</h4>
<p>to be more concrete, if we imagine lazy normalization,</p>



<a name="196361776"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361776" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361776">(May 05 2020 at 20:20)</a>:</h4>
<p>the operation might be like "unify <code>&lt;T as Trait&lt;'a&gt;&gt;::Foo = u32</code>" or something</p>



<a name="196361790"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361790" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361790">(May 05 2020 at 20:21)</a>:</h4>
<p>Can you give a more concrete example? (or maybe you're about to do that)</p>



<a name="196361820"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361820" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361820">(May 05 2020 at 20:21)</a>:</h4>
<p>ninja'd</p>



<a name="196361893"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361893" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361893">(May 05 2020 at 20:22)</a>:</h4>
<p>in chalk's scheme, the type unifier would create a <code>AliasEq(&lt;T as Trait&lt;'a&gt;&gt;::Foo, u32)</code> goal and put it on a list of "things to solve later"</p>



<a name="196361997"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196361997" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196361997">(May 05 2020 at 20:22)</a>:</h4>
<p>but if that list of things to solve later is returned out,</p>



<a name="196362013"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362013" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362013">(May 05 2020 at 20:23)</a>:</h4>
<p>basically we can't go "scanning the constraints" until all those things are solved</p>



<a name="196362068"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362068" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362068">(May 05 2020 at 20:23)</a>:</h4>
<p>the whole stack-based scheme kind of unravels unless you want the <em>program stack</em> to match the <em>solving stack</em> (which isn't so terrible, it's more-or-less true in the recursive solver, but it's not true in the SLG solver nor in many parts of how rustc works)</p>



<a name="196362134"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362134" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362134">(May 05 2020 at 20:24)</a>:</h4>
<p>this is also related to the fact that rustc's current leak check is incorrect</p>



<a name="196362156"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362156" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362156">(May 05 2020 at 20:24)</a>:</h4>
<p>it rejects some subtypes and things it should accept</p>



<a name="196362198"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362198" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362198">(May 05 2020 at 20:24)</a>:</h4>
<p>this in turn has an impact on coherence --</p>



<a name="196362226"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362226" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362226">(May 05 2020 at 20:25)</a>:</h4>
<p>i.e., it might accept two impls as "not overlapping" because it thinks that their self types are not equal, but in fact they are</p>



<a name="196362271"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362271" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362271">(May 05 2020 at 20:25)</a>:</h4>
<p>there's a space of designs here</p>



<a name="196362394"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362394" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362394">(May 05 2020 at 20:26)</a>:</h4>
<p>I was pushing so far in my code to adopt the "most conservative" (in some sense), which is also what chalk currently does, which is where the core "solver operation" sort of looks like:</p>
<div class="codehilite"><pre><span></span><code>Op(Args) = one of {
    Ok(RegionConstraints)
    Err
}
</code></pre></div>


<p>and, if the higher-ranked things don't work, it might just happen that the region constraints are not solvable</p>



<a name="196362416"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362416" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362416">(May 05 2020 at 20:26)</a>:</h4>
<p>This is a lot to follow, anyone else a bit lost?</p>



<a name="196362427"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362427" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362427">(May 05 2020 at 20:27)</a>:</h4>
<p>heh, sorry</p>



<a name="196362437"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362437" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362437">(May 05 2020 at 20:27)</a>:</h4>
<p>it <em>is</em> complex :/</p>



<a name="196362440"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362440" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362440">(May 05 2020 at 20:27)</a>:</h4>
<p>Nature of the beast</p>



<a name="196362468"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362468" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362468">(May 05 2020 at 20:27)</a>:</h4>
<p>let's pull back a bit but suffices to say that</p>



<a name="196362517"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362517" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362517">(May 05 2020 at 20:27)</a>:</h4>
<p>when we try to support a distinct "forall" predicate in rustc, it will interact with this --</p>



<a name="196362526"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362526" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362526">(May 05 2020 at 20:27)</a>:</h4>
<p>but there is plenty of work to do that is distinct from that</p>



<a name="196362582"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362582" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Mark Drobnak <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362582">(May 05 2020 at 20:28)</a>:</h4>
<p>(please postpone responding if I'm interrupting)<br>
If there are any issues that would be a good intro to the codebase, I'm looking for how to get involved in Chalk.</p>
<p>It sounds like there's a lot of hard problems which are blocking progress. Maybe you know of some resources which can help get a new contributor up to speed on the problems? I have some background in Prolog and have read the string of Chalk blog posts.</p>



<a name="196362591"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362591" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362591">(May 05 2020 at 20:28)</a>:</h4>
<p>and I guess that means it makes sense for me to do some of the experimentation I wanted to do that might unblock that</p>



<a name="196362617"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362617" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362617">(May 05 2020 at 20:28)</a>:</h4>
<p><span class="user-mention" data-user-id="218805">@Mark Drobnak</span>  there are indeed some good starter issues!</p>



<a name="196362667"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362667" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362667">(May 05 2020 at 20:28)</a>:</h4>
<p>probably the <a href="http://rust-lang.github.io/chalk/book/" title="http://rust-lang.github.io/chalk/book/">chalk book</a> is also worth highlighting</p>



<a name="196362704"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362704" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362704">(May 05 2020 at 20:29)</a>:</h4>
<p>but in terms of starter issues I was specifically going to spend some time carving up <a href="https://github.com/rust-lang/chalk/issues/368" title="https://github.com/rust-lang/chalk/issues/368">https://github.com/rust-lang/chalk/issues/368</a> into issues, and I think those would be a good starting point</p>



<a name="196362709"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362709" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Mark Drobnak <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362709">(May 05 2020 at 20:29)</a>:</h4>
<p>Ya, I'm actually working on a PR to fix the "file an issue" link (goes to rustc dev repo)</p>



<a name="196362719"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362719" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362719">(May 05 2020 at 20:29)</a>:</h4>
<p>lol there you go :)</p>



<a name="196362785"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362785" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362785">(May 05 2020 at 20:30)</a>:</h4>
<p>So I guess the question I have in regards to this is: Is there something that <em>chalk</em> needs to change here?</p>



<a name="196362841"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362841" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362841">(May 05 2020 at 20:30)</a>:</h4>
<p>I think the answer is <em>maybe</em></p>



<a name="196362856"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362856" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362856">(May 05 2020 at 20:30)</a>:</h4>
<p>but probably it has to start on the rustc side</p>



<a name="196362915"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362915" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362915">(May 05 2020 at 20:30)</a>:</h4>
<p>(I realized btw a flaw in my old plans around region solving, in that I'm not sure if they'll work as well with the recursive solver, but let's not try to get into the details just now)</p>



<a name="196362930"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362930" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> detrumi <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362930">(May 05 2020 at 20:30)</a>:</h4>
<p>Is that maybe because of backwards compatibility?</p>



<a name="196362944"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362944" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362944">(May 05 2020 at 20:31)</a>:</h4>
<p>not entirely</p>



<a name="196362953"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362953" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362953">(May 05 2020 at 20:31)</a>:</h4>
<p>but partially</p>



<a name="196362983"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362983" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362983">(May 05 2020 at 20:31)</a>:</h4>
<p>yeah, that was my other thought</p>



<a name="196362992"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196362992" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196362992">(May 05 2020 at 20:31)</a>:</h4>
<p>basically right now chalk just does <em>nothing</em> about higher-ranked region constraints except for pushing them back to the caller</p>



<a name="196363008"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363008" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363008">(May 05 2020 at 20:31)</a>:</h4>
<p>I think maybe it should do a bit more work in simplifying things</p>



<a name="196363031"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363031" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363031">(May 05 2020 at 20:32)</a>:</h4>
<p>this impacts the interface with polonius</p>



<a name="196363090"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363090" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Areredify <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363090">(May 05 2020 at 20:32)</a>:</h4>
<p>Resolve everything we can resolve?</p>



<a name="196363104"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363104" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363104">(May 05 2020 at 20:32)</a>:</h4>
<p>e.g., I would like chalk to be able to say that <code>exists&lt;'a&gt; { forall&lt;'b&gt; { 'a = 'b } }</code> cannot be proven</p>



<a name="196363112"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363112" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363112">(May 05 2020 at 20:32)</a>:</h4>
<p>just like it does with types</p>



<a name="196363117"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363117" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363117">(May 05 2020 at 20:32)</a>:</h4>
<p>Speaking of polonious...where is that "interaction boundary"</p>



<a name="196363142"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363142" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363142">(May 05 2020 at 20:32)</a>:</h4>
<p>or, more precisely</p>



<a name="196363167"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363167" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363167">(May 05 2020 at 20:32)</a>:</h4>
<p><code>exists&lt;'a&gt; { forall&lt;'b&gt; { 'a: 'b, 'b: 'a } }</code></p>



<a name="196363191"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363191" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363191">(May 05 2020 at 20:33)</a>:</h4>
<p>but that <em>would</em>, I think, require us to understand that</p>



<a name="196363233"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363233" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363233">(May 05 2020 at 20:33)</a>:</h4>
<p><code>exists&lt;'a&gt; { forall&lt;'b&gt; { if ('a: 'b, 'b: 'a) { 'a: 'b, 'b: 'a } } }</code> <em>is</em> provable</p>



<a name="196363274"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363274" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363274">(May 05 2020 at 20:33)</a>:</h4>
<p>(this last part is one of the tricky bits around with rustc)</p>



<a name="196363341"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363341" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363341">(May 05 2020 at 20:34)</a>:</h4>
<p>and it gets more fun than that...</p>



<a name="196363363"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363363" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363363">(May 05 2020 at 20:34)</a>:</h4>
<p>(so much for a "light" meeting. Some complex discussion)</p>



<a name="196363484"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363484" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363484">(May 05 2020 at 20:35)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05/near/196363117" title="#narrow/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05/near/196363117">said</a>:</p>
<blockquote>
<p>Speaking of polonious...where is that "interaction boundary"</p>
</blockquote>
<p>so, the idea is basically that chalk exports region constraints, and those can be translated to inputs to polonius -- but polonius can't handle higher-ranked things, and sometimes this interacts with other concepts that chalk is better equippe to handle, like well-formed types. </p>
<p>So I think it comes to</p>
<div class="codehilite"><pre><span></span><code>chalk --&gt;
   potentially some intermediate simplifier --&gt;
       polonius
</code></pre></div>


<p>or maybe that simplification happens within chalk</p>



<a name="196363535"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363535" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363535">(May 05 2020 at 20:35)</a>:</h4>
<p>originally I pursued a design where that simplification happend within <em>polonius</em>, but I ultimately felt that wasn't a good fit</p>



<a name="196363547"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363547" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363547">(May 05 2020 at 20:35)</a>:</h4>
<p>I feel like we need more/better tests for region constraints in Chalk</p>



<a name="196363608"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363608" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363608">(May 05 2020 at 20:36)</a>:</h4>
<p>which reminds me..</p>



<a name="196363616"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363616" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363616">(May 05 2020 at 20:36)</a>:</h4>
<p>did I open a PR to introduce outlives?</p>



<a name="196363620"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363620" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363620">(May 05 2020 at 20:36)</a>:</h4>
<p>did we land that?</p>



<a name="196363639"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363639" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Areredify <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363639">(May 05 2020 at 20:36)</a>:</h4>
<p>Yes and no</p>



<a name="196363650"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363650" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363650">(May 05 2020 at 20:36)</a>:</h4>
<p>that's another big hunk of the rustc integration story</p>



<a name="196363658"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363658" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363658">(May 05 2020 at 20:36)</a>:</h4>
<p>yes and yes</p>



<a name="196363681"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363681" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Areredify <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363681">(May 05 2020 at 20:36)</a>:</h4>
<p>oh right</p>



<a name="196363691"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363691" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Areredify <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363691">(May 05 2020 at 20:36)</a>:</h4>
<p>yes and yes indeed</p>



<a name="196363696"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363696" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363696">(May 05 2020 at 20:36)</a>:</h4>
<p><a href="https://github.com/rust-lang/chalk/pull/419" title="https://github.com/rust-lang/chalk/pull/419">https://github.com/rust-lang/chalk/pull/419</a></p>



<a name="196363704"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363704" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Areredify <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363704">(May 05 2020 at 20:37)</a>:</h4>
<p>On a related note: we need an <code>Outlives(T, 'a)</code> clause</p>



<a name="196363795"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363795" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363795">(May 05 2020 at 20:37)</a>:</h4>
<p>Yeah, maybe we want to switch a bit and talk about that?</p>



<a name="196363808"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363808" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363808">(May 05 2020 at 20:37)</a>:</h4>
<p>(37 minutes in)</p>



<a name="196363838"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363838" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363838">(May 05 2020 at 20:38)</a>:</h4>
<p>yeah, let's talk a bit about the steps there</p>



<a name="196363887"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363887" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363887">(May 05 2020 at 20:38)</a>:</h4>
<p>also whatever it was we pushed on the stack for <span class="user-mention" data-user-id="251766">@Areredify</span></p>



<a name="196363894"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363894" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363894">(May 05 2020 at 20:38)</a>:</h4>
<p><span class="user-mention" data-user-id="251766">@Areredify</span> brought up <code>ObjectSafe</code> earlier</p>



<a name="196363996"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196363996" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196363996">(May 05 2020 at 20:39)</a>:</h4>
<p>These are both <em>somewhat</em> related, in the fact that they're sort of ignored in the current rustc integration</p>



<a name="196364019"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364019" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364019">(May 05 2020 at 20:39)</a>:</h4>
<p>but other than that, a bit different</p>



<a name="196364049"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364049" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364049">(May 05 2020 at 20:39)</a>:</h4>
<p>(ps, I think I will merge <a href="https://github.com/rust-lang/chalk/pull/428/" title="https://github.com/rust-lang/chalk/pull/428/">https://github.com/rust-lang/chalk/pull/428/</a> now...I'd like to be able to refer to that table :)</p>



<a name="196364082"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364082" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364082">(May 05 2020 at 20:39)</a>:</h4>
<p>well so object-safe</p>



<a name="196364137"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364137" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364137">(May 05 2020 at 20:40)</a>:</h4>
<p>I think what we want there is relatively simple</p>



<a name="196364163"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364163" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364163">(May 05 2020 at 20:40)</a>:</h4>
<p>(saw that and wanted to defer to you for function ptr changes)</p>



<a name="196364166"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364166" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Areredify <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364166">(May 05 2020 at 20:40)</a>:</h4>
<p>We can't have object safe until we have assoc functions and what not</p>



<a name="196364190"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364190" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364190">(May 05 2020 at 20:40)</a>:</h4>
<p>I would not make that part of chalk</p>



<a name="196364210"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364210" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Areredify <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364210">(May 05 2020 at 20:40)</a>:</h4>
<p>Oh?</p>



<a name="196364213"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364213" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364213">(May 05 2020 at 20:40)</a>:</h4>
<p>I would make a <code>RustIrDatabase</code> callback method <code>is_object_safe(TraitId)</code></p>



<a name="196364231"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364231" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364231">(May 05 2020 at 20:40)</a>:</h4>
<p>and have chalk-solve invoke it on demand</p>



<a name="196364242"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364242" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364242">(May 05 2020 at 20:40)</a>:</h4>
<p>we can maybe integrate later</p>



<a name="196364255"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364255" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Areredify <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364255">(May 05 2020 at 20:41)</a>:</h4>
<p>(which is how it's handled in the current <code>Unsize</code> pr)</p>



<a name="196364271"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364271" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364271">(May 05 2020 at 20:41)</a>:</h4>
<p>well...</p>



<a name="196364285"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364285" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364285">(May 05 2020 at 20:41)</a>:</h4>
<p>(and in our tests, I'd add a #[object_safe] flag)</p>



<a name="196364289"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364289" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364289">(May 05 2020 at 20:41)</a>:</h4>
<p>I still think we need the <code>ObjectSafe</code> goal</p>



<a name="196364293"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364293" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364293">(May 05 2020 at 20:41)</a>:</h4>
<p>yes</p>



<a name="196364310"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364310" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364310">(May 05 2020 at 20:41)</a>:</h4>
<p>I'm just saying that "when we need to prove this goal, we invoke the callback"</p>



<a name="196364332"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364332" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364332">(May 05 2020 at 20:41)</a>:</h4>
<p>Since rustc needs to register that</p>



<a name="196364342"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364342" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364342">(May 05 2020 at 20:41)</a>:</h4>
<p>eventually we probably do want to reproduce that logic</p>



<a name="196364355"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364355" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364355">(May 05 2020 at 20:41)</a>:</h4>
<p>but I don't think it makes sense to do so right now</p>



<a name="196364368"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364368" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364368">(May 05 2020 at 20:41)</a>:</h4>
<p>right</p>



<a name="196364390"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364390" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364390">(May 05 2020 at 20:41)</a>:</h4>
<p>That was basically what I was thinking</p>



<a name="196364450"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364450" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364450">(May 05 2020 at 20:42)</a>:</h4>
<p>should I open an issue?</p>



<a name="196364476"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364476" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Areredify <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364476">(May 05 2020 at 20:42)</a>:</h4>
<p>I think I'll just incorporate it in my pr</p>



<a name="196364503"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364503" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364503">(May 05 2020 at 20:42)</a>:</h4>
<p>OK, it might be nice to land in a separate PR</p>



<a name="196364515"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364515" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364515">(May 05 2020 at 20:42)</a>:</h4>
<p>Agreed</p>



<a name="196364570"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364570" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364570">(May 05 2020 at 20:43)</a>:</h4>
<p>Almost wanted to ask you (<span class="user-mention" data-user-id="251766">@Areredify</span>) to split out the <code>DynTy</code> changes</p>



<a name="196364577"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364577" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364577">(May 05 2020 at 20:43)</a>:</h4>
<p>but decided it's fine</p>



<a name="196364600"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364600" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Areredify <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364600">(May 05 2020 at 20:43)</a>:</h4>
<p>I can do that, they are in a separate commit</p>



<a name="196364642"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364642" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364642">(May 05 2020 at 20:43)</a>:</h4>
<p>filed <a href="https://github.com/rust-lang/chalk/issues/434" title="https://github.com/rust-lang/chalk/issues/434">https://github.com/rust-lang/chalk/issues/434</a></p>



<a name="196364706"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364706" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364706">(May 05 2020 at 20:44)</a>:</h4>
<p>so regions and outlives?</p>



<a name="196364729"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364729" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364729">(May 05 2020 at 20:44)</a>:</h4>
<p>I have some related work for this too on a branch, actually ;)</p>



<a name="196364741"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364741" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364741">(May 05 2020 at 20:44)</a>:</h4>
<p>yeah</p>



<a name="196364850"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364850" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364850">(May 05 2020 at 20:45)</a>:</h4>
<p>So, there's two things we need to think about</p>



<a name="196364870"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364870" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364870">(May 05 2020 at 20:45)</a>:</h4>
<p>so rustc has the same basic model of chalk (modulo details around the leak-check), wherein each operation succeeds or fails, and if it succeeds, it gives back "region constraints",  and they have the form:</p>
<ul>
<li><code>'a: 'b</code>, or</li>
<li><code>T: 'a</code></li>
</ul>



<a name="196364871"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364871" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364871">(May 05 2020 at 20:45)</a>:</h4>
<p><code>RegionOutlives</code> and <code>TypeOutlives</code></p>



<a name="196364911"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364911" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364911">(May 05 2020 at 20:45)</a>:</h4>
<p>I ninja'd you this time</p>



<a name="196364934"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364934" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364934">(May 05 2020 at 20:45)</a>:</h4>
<p>so we probably want to extend chalk to be able to generate similar region constraints</p>



<a name="196364962"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364962" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364962">(May 05 2020 at 20:45)</a>:</h4>
<p>on the other side, we probably want chalk goals that are "always solveable" and just generate the constraints</p>



<a name="196364991"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196364991" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196364991">(May 05 2020 at 20:46)</a>:</h4>
<p>so that we can (e.g.) translate where clauses like <code>where 'a: 'b</code></p>



<a name="196365076"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365076" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365076">(May 05 2020 at 20:46)</a>:</h4>
<p>Hmm, that would work I think</p>



<a name="196365088"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365088" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365088">(May 05 2020 at 20:46)</a>:</h4>
<p>I have a branch where I did exactly this, and I also modified unification so that it just succeeds with a list of auxiliary goals (some of which are outlives goals)</p>



<a name="196365111"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365111" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365111">(May 05 2020 at 20:46)</a>:</h4>
<p>but rebasing that branch was proving annoying</p>



<a name="196365145"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365145" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365145">(May 05 2020 at 20:46)</a>:</h4>
<p>(also I don't think I handled type outlives)</p>



<a name="196365215"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365215" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365215">(May 05 2020 at 20:47)</a>:</h4>
<p>it's honestly maybe easier to just reimplement it</p>



<a name="196365242"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365242" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365242">(May 05 2020 at 20:47)</a>:</h4>
<p>been a lot of drift since that branch started (e.g., TypeFamily =&gt; Interner, etc)</p>



<a name="196365252"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365252" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365252">(May 05 2020 at 20:47)</a>:</h4>
<p>So region outlives is simple (I think)</p>



<a name="196365274"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365274" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365274">(May 05 2020 at 20:47)</a>:</h4>
<p>What does type outlives actually entail</p>



<a name="196365331"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365331" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365331">(May 05 2020 at 20:48)</a>:</h4>
<p>nothing really</p>



<a name="196365352"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365352" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365352">(May 05 2020 at 20:48)</a>:</h4>
<p>that is something else I would export to rustc for now</p>



<a name="196365373"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365373" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365373">(May 05 2020 at 20:48)</a>:</h4>
<p><em>eventually</em> I think chalk will have more complex rules for these two goals</p>



<a name="196365399"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365399" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365399">(May 05 2020 at 20:48)</a>:</h4>
<p>certainly today's trait solver in rustc just exports this to another bit of the code</p>



<a name="196365451"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365451" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365451">(May 05 2020 at 20:49)</a>:</h4>
<p>one sec...</p>



<a name="196365461"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365461" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Areredify <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365461">(May 05 2020 at 20:49)</a>:</h4>
<p>Nll 3.0 with chalk and polonius forming a megazord?</p>



<a name="196365494"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365494" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365494">(May 05 2020 at 20:49)</a>:</h4>
<p>this is the <a href="https://github.com/rust-lang/rust/blob/f8d394e5184fe3af761ea1e5ba73f993cfb36dfe/src/librustc_trait_selection/traits/fulfill.rs#L371-L420" title="https://github.com/rust-lang/rust/blob/f8d394e5184fe3af761ea1e5ba73f993cfb36dfe/src/librustc_trait_selection/traits/fulfill.rs#L371-L420">relevant rustc code</a></p>



<a name="196365509"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365509" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365509">(May 05 2020 at 20:49)</a>:</h4>
<p>well so in rustc today</p>



<a name="196365520"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365520" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365520">(May 05 2020 at 20:49)</a>:</h4>
<p>the NLL solver is responsible for handling higher-ranked things</p>



<a name="196365589"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365589" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365589">(May 05 2020 at 20:50)</a>:</h4>
<p>so it kind of plays that "simplify -&gt; solve regions" role I described above</p>



<a name="196365603"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365603" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365603">(May 05 2020 at 20:50)</a>:</h4>
<p>and I think for now we should just try to fit in there</p>



<a name="196365635"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365635" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365635">(May 05 2020 at 20:50)</a>:</h4>
<p>I guess there is one bit of special-ness that we do today for type-outlives</p>



<a name="196365658"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365658" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365658">(May 05 2020 at 20:50)</a>:</h4>
<p>if you have <code>for&lt;'a&gt; T: 'a</code></p>



<a name="196365694"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365694" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365694">(May 05 2020 at 20:50)</a>:</h4>
<p>where <code>T</code> does not reference <code>'a</code></p>



<a name="196365702"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365702" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365702">(May 05 2020 at 20:51)</a>:</h4>
<p>we convert that to <code>T: 'static</code></p>



<a name="196365756"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365756" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365756">(May 05 2020 at 20:51)</a>:</h4>
<p>that would sort of "fall out" from the more general chalk scheme I was imagining, not sure how we want to handle it for now, perhaps with some hacky code, idk</p>



<a name="196365790"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365790" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365790">(May 05 2020 at 20:51)</a>:</h4>
<p>(9 minutes left)</p>



<a name="196365817"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365817" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Areredify <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365817">(May 05 2020 at 20:51)</a>:</h4>
<p>(probably should switch to const stuff now)</p>



<a name="196365892"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365892" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365892">(May 05 2020 at 20:52)</a>:</h4>
<p>I think though the right dependencies are</p>
<ul>
<li>add region outlives goals that generate region outlives constraints</li>
<li>use region outlives goals in unification to simplify things</li>
<li>add type outlives goals and constraints (and don't address the for <code>for&lt;'a&gt; T: 'a</code> thing)</li>
<li>connect to rustc</li>
<li>consider how to solve the <code>for&lt;'a&gt;</code> thing :)</li>
</ul>



<a name="196365917"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365917" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365917">(May 05 2020 at 20:52)</a>:</h4>
<p>I'm going to make a list in the skill tree roughly like that</p>



<a name="196365936"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365936" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365936">(May 05 2020 at 20:52)</a>:</h4>
<p>Awesome</p>



<a name="196365971"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365971" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365971">(May 05 2020 at 20:52)</a>:</h4>
<p>We can discuss more async as needed</p>



<a name="196365991"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196365991" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196365991">(May 05 2020 at 20:53)</a>:</h4>
<p>Ok const</p>



<a name="196366010"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196366010" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196366010">(May 05 2020 at 20:53)</a>:</h4>
<p>Quick summary?</p>



<a name="196366066"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196366066" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196366066">(May 05 2020 at 20:53)</a>:</h4>
<p>From what I can tell, the problem/question is around whether we want a <code>Ty</code> for consts to stick around all the time?</p>



<a name="196366265"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196366265" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196366265">(May 05 2020 at 20:55)</a>:</h4>
<p>filed  <em>extend chalk to include outlives goals</em> <a href="https://github.com/rust-lang-nursery/chalk/issues/435" title="https://github.com/rust-lang-nursery/chalk/issues/435">chalk#435</a>  btw</p>



<a name="196366294"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196366294" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196366294">(May 05 2020 at 20:55)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05/near/196366066" title="#narrow/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05/near/196366066">said</a>:</p>
<blockquote>
<p>From what I can tell, the problem/question is around whether we want a <code>Ty</code> for consts to stick around all the time?</p>
</blockquote>
<p>and kind of "where to put it"</p>



<a name="196366341"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196366341" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196366341">(May 05 2020 at 20:55)</a>:</h4>
<p>to see the problem, consider that <code>forall&lt;T&gt; { .. }</code> gives you all you need to know -- "some type T"</p>



<a name="196366366"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196366366" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196366366">(May 05 2020 at 20:56)</a>:</h4>
<p>but for a constant, <code>forall&lt;const C&gt;</code> is maybe not enough</p>



<a name="196366408"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196366408" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196366408">(May 05 2020 at 20:56)</a>:</h4>
<p>maybe you want <code>const C: usize</code></p>



<a name="196366418"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196366418" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196366418">(May 05 2020 at 20:56)</a>:</h4>
<p>this "extra information"</p>



<a name="196366452"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196366452" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196366452">(May 05 2020 at 20:56)</a>:</h4>
<p>if we don't include the type, then this pushes chalk (at least) to have the notion of "some constant of some type"</p>



<a name="196366485"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196366485" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196366485">(May 05 2020 at 20:56)</a>:</h4>
<p>this actually..can kind of work out just fine, and it's elegant in the sense that everything works the same,</p>



<a name="196366504"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196366504" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196366504">(May 05 2020 at 20:56)</a>:</h4>
<p>but it'd be weird for (say) rustc, depending how much we wind up sharing details,</p>



<a name="196366557"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196366557" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196366557">(May 05 2020 at 20:57)</a>:</h4>
<p>in that rustc probably expects that if it sees an expression like <code>C</code>, it has the type <code>usize</code> (whereas in the way that chalk would be modeling things, it could have 0, 1, or N types...)</p>



<a name="196366649"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196366649" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196366649">(May 05 2020 at 20:57)</a>:</h4>
<p>this is why <span class="user-mention" data-user-id="251766">@Areredify</span>, in their PR, extended <code>ParameterKind</code>:</p>
<div class="codehilite"><pre><span></span><code><span class="k">enum</span> <span class="nc">ParameterKind</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="n">Type</span><span class="p">(</span><span class="n">T</span><span class="p">),</span><span class="w"></span>
<span class="w">    </span><span class="n">Lifetime</span><span class="p">(</span><span class="n">L</span><span class="p">),</span><span class="w"></span>
<span class="w">    </span><span class="n">Const</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">ty</span>: <span class="nc">Ty</span><span class="o">&lt;</span><span class="n">I</span><span class="o">&gt;</span><span class="p">,</span><span class="w"> </span><span class="k">const</span>: <span class="nc">C</span><span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</code></pre></div>



<a name="196366704"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196366704" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196366704">(May 05 2020 at 20:58)</a>:</h4>
<p>so it is always carrying that "extra information" along (the type)</p>



<a name="196366827"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196366827" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196366827">(May 05 2020 at 20:59)</a>:</h4>
<p>Makes sense?</p>



<a name="196366838"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196366838" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196366838">(May 05 2020 at 20:59)</a>:</h4>
<p>the key point seems to me to be that, whatever we do, <code>Binders</code> is going to need the type info. Currently <code>Binders</code> stores a <code>ParameterKind&lt;()&gt;</code>, so the approach that <span class="user-mention" data-user-id="251766">@Areredify</span> took does make sense</p>



<a name="196366884"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196366884" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196366884">(May 05 2020 at 20:59)</a>:</h4>
<p>something's bugging me though</p>



<a name="196366974"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196366974" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196366974">(May 05 2020 at 21:00)</a>:</h4>
<p>I'm trying to put my finger on what it is</p>



<a name="196366992"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196366992" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196366992">(May 05 2020 at 21:00)</a>:</h4>
<p>I mean I guess it's partly the "non-analogous" nature of the variants</p>



<a name="196367011"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367011" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367011">(May 05 2020 at 21:00)</a>:</h4>
<p>it's also that we probably want some type that is the pair (Ty, C)</p>



<a name="196367031"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367031" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367031">(May 05 2020 at 21:00)</a>:</h4>
<p>which is more how rustc has things setup</p>



<a name="196367051"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367051" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367051">(May 05 2020 at 21:00)</a>:</h4>
<p>it may be that the <code>ParameterKind</code> enum just doesn't work out so well</p>



<a name="196367105"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367105" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367105">(May 05 2020 at 21:01)</a>:</h4>
<p>and we should break to like, one type for use in <code>Binders</code> (which takes the role of <code>ParameterKind&lt;()&gt;</code>),</p>



<a name="196367139"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367139" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367139">(May 05 2020 at 21:01)</a>:</h4>
<p>one type for use as <code>Parameter</code> (which I think we want anyway, for rustc interop, and I think it wants to be called <code>GenericArg</code>)</p>



<a name="196367151"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367151" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367151">(May 05 2020 at 21:01)</a>:</h4>
<p>Right</p>



<a name="196367159"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367159" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367159">(May 05 2020 at 21:01)</a>:</h4>
<p>and maybe some other type for <code>ParameterKind&lt;EnaVariable&gt;</code>, since apparently we use that</p>



<a name="196367198"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367198" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367198">(May 05 2020 at 21:02)</a>:</h4>
<p>(although it may be that const inference variables can't share as much code?)</p>



<a name="196367247"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367247" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367247">(May 05 2020 at 21:02)</a>:</h4>
<p>I haven't read these changes in the PR closely</p>



<a name="196367287"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367287" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367287">(May 05 2020 at 21:02)</a>:</h4>
<p>since when I saw that enum I got too distracted ;) but now that I understand better what motivated it, I should re-read</p>



<a name="196367298"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367298" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367298">(May 05 2020 at 21:02)</a>:</h4>
<p>There's also <code>CanonicalVarKind</code> for <code>ParameterKind&lt;UniverseIndex&gt;</code></p>



<a name="196367318"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367318" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Areredify <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367318">(May 05 2020 at 21:02)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05/near/196367198" title="#narrow/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05/near/196367198">said</a>:</p>
<blockquote>
<p>(although it may be that const inference variables can't share as much code?)</p>
</blockquote>
<p>They are basically the same, you just copy <code>ty</code>s around a lot</p>



<a name="196367341"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367341" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367341">(May 05 2020 at 21:03)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232957">Jack Huey</span> <a href="#narrow/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05/near/196367298" title="#narrow/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05/near/196367298">said</a>:</p>
<blockquote>
<p>There's also <code>CanonicalVarKind</code> for <code>ParameterKind&lt;UniverseIndex&gt;</code></p>
</blockquote>
<p>yeah, and that is something we probably need to change too</p>



<a name="196367371"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367371" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367371">(May 05 2020 at 21:03)</a>:</h4>
<p>at least, in rustc, we also have info like "placeholder" and I think it makes sense for chalk</p>



<a name="196367382"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367382" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367382">(May 05 2020 at 21:03)</a>:</h4>
<p>it's not "just" a universe index</p>



<a name="196367393"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367393" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367393">(May 05 2020 at 21:03)</a>:</h4>
<p>I'm also reminded of int/float variables, that fit in this..somehow</p>



<a name="196367429"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367429" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367429">(May 05 2020 at 21:03)</a>:</h4>
<p>(also it's 5:03, so if anyone has to leave)</p>



<a name="196367480"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367480" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367480">(May 05 2020 at 21:04)</a>:</h4>
<p>I should run soon-ish</p>



<a name="196367502"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367502" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367502">(May 05 2020 at 21:04)</a>:</h4>
<p>I am not sure what the 'conclusion' is here</p>



<a name="196367519"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367519" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367519">(May 05 2020 at 21:04)</a>:</h4>
<p>Don't think we have one</p>



<a name="196367531"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367531" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367531">(May 05 2020 at 21:04)</a>:</h4>
<p>I think it would be ok to land the const generics PR in one form, also, and consider</p>



<a name="196367543"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367543" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367543">(May 05 2020 at 21:04)</a>:</h4>
<p>depends how intrusive things feel</p>



<a name="196367559"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367559" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367559">(May 05 2020 at 21:04)</a>:</h4>
<p>(I'm not sure if there are bits we can land first?)</p>



<a name="196367577"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367577" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367577">(May 05 2020 at 21:05)</a>:</h4>
<p>(I'm also still unsure of what <code>CanonicalVarKind::Placeholder*</code> means)</p>



<a name="196367621"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367621" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367621">(May 05 2020 at 21:05)</a>:</h4>
<p>I'll look over the const PR again</p>



<a name="196367645"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367645" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367645">(May 05 2020 at 21:05)</a>:</h4>
<p>and think a bit more about it</p>



<a name="196367768"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196367768" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196367768">(May 05 2020 at 21:06)</a>:</h4>
<p>it means a placeholder :)</p>



<a name="196368051"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196368051" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196368051">(May 05 2020 at 21:07)</a>:</h4>
<p>i.e., if you have <code>Implemented(!U1_1: Foo)</code>, in chalk we just pass <code>U1_1</code> through--</p>



<a name="196368060"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196368060" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196368060">(May 05 2020 at 21:07)</a>:</h4>
<p>Well I guess...why is it a <em>Binder</em></p>



<a name="196368067"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196368067" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196368067">(May 05 2020 at 21:07)</a>:</h4>
<p>actually we might normalize the <em>universes</em> but not the index</p>



<a name="196368103"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196368103" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196368103">(May 05 2020 at 21:07)</a>:</h4>
<p>why wouldn't it be?</p>



<a name="196368149"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196368149" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196368149">(May 05 2020 at 21:07)</a>:</h4>
<p>in rustc, we replace that with <code>canonical&lt;!U1&gt; { ^0: Foo }</code>, effectively</p>



<a name="196368163"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196368163" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196368163">(May 05 2020 at 21:07)</a>:</h4>
<p>i.e., "some placeholder in U1"</p>



<a name="196368198"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196368198" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196368198">(May 05 2020 at 21:08)</a>:</h4>
<p>we actually <em>don't</em> normalize the universes, but we should ..</p>



<a name="196368259"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196368259" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196368259">(May 05 2020 at 21:08)</a>:</h4>
<p>this is kind of good in rustc because if you had <code>Implemented(!U1_1: Foo&lt;!U1_2&gt;)</code></p>



<a name="196368264"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196368264" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196368264">(May 05 2020 at 21:08)</a>:</h4>
<p>and</p>



<a name="196368287"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196368287" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196368287">(May 05 2020 at 21:08)</a>:</h4>
<p><code>Implemented(!U1_1: Foo&lt;!U1_3&gt;)</code></p>



<a name="196368297"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196368297" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196368297">(May 05 2020 at 21:08)</a>:</h4>
<p>they have the same canonical form</p>



<a name="196368304"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196368304" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196368304">(May 05 2020 at 21:08)</a>:</h4>
<p>but in chalk they don't</p>



<a name="196368311"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196368311" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196368311">(May 05 2020 at 21:08)</a>:</h4>
<p>but indeed they are equivalent</p>



<a name="196368333"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196368333" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196368333">(May 05 2020 at 21:08)</a>:</h4>
<p>i.e, the only thing that matters is "two distinct placeholders in the same universe"</p>



<a name="196368336"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196368336" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196368336">(May 05 2020 at 21:09)</a>:</h4>
<p>it doesn't matter what index they have</p>



<a name="196368364"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196368364" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jack Huey <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196368364">(May 05 2020 at 21:09)</a>:</h4>
<p>hmm</p>



<a name="196370677"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/design%20meeting%202020.05.05/near/196370677" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/design.20meeting.202020.2E05.2E05.html#196370677">(May 05 2020 at 21:28)</a>:</h4>
<p>I updated the <a href="https://rust-lang.github.io/wg-traits/roadmap/skill-tree.html" title="https://rust-lang.github.io/wg-traits/roadmap/skill-tree.html">skill tree</a> -- though it may not have re-rendered yet</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>